#include <iostream>
using namespace std;
#include <unistd.h>
#include <thread>

void threar_run()
{
    while(true)
    {
        cout<<"我是新线程..."<<endl;
        sleep(1);
    }
}

int main()
{
    thread t1(threar_run);
    while(true)
    {
        cout<<"我是主线程..."<<endl;
        sleep(1);
    }
    return 0;
}








// #include <iostream>               
// using namespace std;
// #include <assert.h>
// #include <string>
// #include <vector>
// #include <pthread.h>
// #include <unistd.h>
// #define NUM 10


// class ThreadData
// {
// public:
//     int number;
//     pthread_t tid;
//     char buffername[64];
// };
// void* start_routine(void* args)
// {
//     int cnt = 10;
//     ThreadData* td = static_cast<ThreadData *>(args);
//     while (cnt)
//     {
//        cout<<"new thread create success, name : "<<td->buffername<<" cnt :"<<cnt--<<endl;
//         sleep(1);
//         //return nullptr
//         //pthread_exit(nullptr);
//         //exit(0);不能用来终止线程 任何一个执行流调用exit都会让整个进程退出
//     }
//     //线程如何终止的问题
//     //return nullptr
//     //pthread_exit(nullptr);
//     // return nullptr;
//     return (void*)116;
// }

// int main()
// {
//     vector<ThreadData*> threads;

//     for(int i=0;i<NUM;++i)
//     {
//         ThreadData *td = new ThreadData();
//         td->number=i+1;
//         snprintf(td->buffername,sizeof td->buffername,"%s : %d","thread",i+1);
//         // int n = pthread_create(&td->tid,nullptr,start_routine,(void*)td->buffername);
//         // assert(n == 0);
//         // (void)n;
//         // sleep(1);
//         pthread_create(&td->tid,nullptr,start_routine,(void*)td);
//         // sleep(1);
//         threads.push_back(td);
      
//     }
//     for(auto& iter: threads)
//     {
//         cout<<"create thread : "<<iter->buffername<<" ："<<iter->tid<< " success" <<endl;
//     }
//     sleep(5);
//     for(int i =0;i<threads.size()/2;++i)
//     {
//         pthread_cancel(threads[i]->tid);
//         cout<<"pthread_cancel ： "<<threads[i]->buffername<<" success "<<endl;
//     }
//     for(auto& iter: threads)
//     {
//         void* ret = nullptr;
//         int n = pthread_join(iter->tid,&ret);
//         assert(n == 0);
//         cout<<"join : "<<iter->buffername<<" success , number: "<<(long long)ret<<endl;
//         delete iter;
//     }
//     // while (true)
//     // {
//     //     cout<<"new thread create success, name : main thread"<<endl<<endl;
//     //     sleep(1);
//     // }
//     return 0;
// }

